home *** CD-ROM | disk | FTP | other *** search
-
-
- #include "FREngineLogo.h"
-
- TERTTIImplementation(FRFlyingLogo, TEEngineObject);
-
- TESoundReference* FREngineLogo::ms_pCountdown = NULL;
- TESoundReference* FREngineLogo::ms_pHBomb = NULL;
- UInt32 FREngineLogo::ms_ulLogoStart = 0;
- UInt32 FREngineLogo::ms_ulLogoState = 0;
-
- void FREngineLogo::Start(void)
- {
- Initialize();
- Loop();
- Cleanup();
- }
-
- void FREngineLogo::Initialize(void)
- {
- TEString Str = "countdown.ogg";
- TESoundManager* pSound = TESoundManager::GetSoundManager();
-
- ms_pCountdown = pSound->GetSound(Str);
- Str = "hbomb.ogg";
- ms_pHBomb = pSound->GetSound(Str);
-
- Str = "load trinity-logo.bsp";
- TEConsole::GetConsole()->EnterCommand(Str, true);
-
- ms_ulLogoState = 1;
- ms_ulLogoStart = TETimer::GetTimer()->GetTime();
- }
-
- void FREngineLogo::Cleanup(void)
- {
- TEString Str = "unload";
-
- TEConsole::GetConsole()->EnterCommand(Str, true);
-
- SafeDelete(ms_pCountdown);
- SafeDelete(ms_pHBomb);
- ms_ulLogoState = 0;
- ms_ulLogoStart = 0;
- }
-
- void FREngineLogo::Loop(void)
- {
- TEEngine* pEngine = TEEngine::GetEngine();
- TERenderer* pRender = TERenderer::GetRenderer();
- TECamera* pCam = pRender->GetCamera();
- TEInputDevices* pInput = TEInputDevices::GetInputDevices();
- TETimer* pTimer = TETimer::GetTimer();
- TEParticleFX* pPart1 = NULL;
- TEParticleFX* pPart2 = NULL;
- FRFlyingLogo* pLogo = new FRFlyingLogo;
- UInt32 ulTime = pTimer->GetTime() - ms_ulLogoStart;
- TEVector CamPos = TEVector(0, 5, -200);
- TEVector CamRot, Pos, Normal;
-
- pEngine->ShowCursor(false);
- pCam->SetPosition(CamPos);
-
- while(ulTime < 17500)
- {
- if(ms_ulLogoState == 1)
- {
- if(ulTime < 5000)
- {
- Float fF = ulTime / 5000.0f;
- CamPos.m_fZ = -200.0f + 170.0f * fF;
- CamPos.m_fY = 5 - 5 * fF;
- CamRot.m_fX = -30 * fF;
- }
- else
- {
- ms_ulLogoState = 2;
- CamPos.m_fY = 0;
- CamPos.m_fZ = -30;
- CamRot.m_fX = -30;
- }
- pCam->SetPosition(CamPos);
- pCam->SetRotation(CamRot);
- }
- if(ms_ulLogoState == 2)
- {
- ms_pCountdown->Play(0, 1.0f);
- ms_ulLogoState = 3;
- }
-
- if(ms_ulLogoState == 3)
- {
- if(ulTime >= 7000)
- {
- CamPos = TEVector(0, 25, -240);
- CamRot = TEVector(5, 0, 0);
- pCam->SetPosition(CamPos);
- pCam->SetRotation(CamRot);
- ms_ulLogoState = 4;
- }
- }
-
- if(ms_ulLogoState == 4)
- {
- if(ulTime >= 8500)
- {
- Pos = TEVector(0, -13, -5);
- Normal = TEVector(0, 1, 0);
-
- pEngine->FreeAllObjectsInWorld();
-
- pPart1 = new TEParticleFX(Pos, 0, 5, 10.0f, 0, 3, 3, Normal,
- 1, 800, 128, 900, false, false);
- pPart1->SetColor(255, 255, 255);
- pEngine->AddParticleSystem(pPart1);
-
- Pos = TEVector(0, 0, 0);
- Normal = TEVector(0, 0, -1);
- pPart2 = new TEParticleFX(Pos, 0, 5, 7.0f, 0, 0, 0, Normal,
- 1, 800, 128, 800, true, false);
- pPart2->SetColor(255, 255, 255);
- Normal = TEVector(0, 7200, 0);
- pPart2->SetRotation(Normal);
- pEngine->AddParticleSystem(pPart2);
-
- ms_pHBomb->Play(0, 1.0f);
-
- ms_ulLogoState = 5;
- }
- }
- if(ms_ulLogoState == 5)
- {
- if(ulTime >= 8900)
- {
- pPart2->SetData(Pos, 0, 0, 0, 0, 0, 0, Normal,
- 100000, 0, 0, 0, false, false);
- ms_ulLogoState = 6;
-
- pLogo->SetCenter(Pos);
- pEngine->AddObjectToWorld(pLogo);
- }
- }
-
- if(ms_ulLogoState == 6)
- {
- if(ulTime >= 1700)
- {
- pPart1->SetData(Pos, 0, 0, 0, 0, 0, 0, Normal,
- 100000, 0, 0, 0, false, false);
- ms_ulLogoState = 7;
- }
- }
-
- if(ms_ulLogoState > 5 && ulTime < 11000)
- {
- Float fF = (ulTime - 8500.0f) / 2500.0f;
- Pos.m_fY = 25 * fF;
- Pos.m_fZ = -220 * fF;
- pLogo->SetCenter(Pos);
- }
-
- pEngine->Idle();
-
- ulTime = pTimer->GetTime() - ms_ulLogoStart;
-
- if(pInput->IsPressed(TE_KEY_ESCAPE) ||
- pInput->IsPressed(TE_KEY_ENTER) ||
- pInput->IsPressed(TE_KEY_SPACE))
- break;
- }
-
- pEngine->FreeAllParticleSystems();
- pEngine->FreeAllObjectsInWorld();
- pEngine->ShowCursor(true);
- }